home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / lib / logolib / for < prev    next >
Text File  |  1995-05-03  |  848b  |  32 lines

  1. .macro for :for.values :for.instr ~
  2.    [:for.var first :for.values] ~
  3.    [:for.initial run first bf :for.values] ~
  4.    [:for.final run first bf bf :for.values] ~
  5.    [:for.step forstep] ~
  6.    [:for.tester (ifelse :for.step < 0 ~
  7.                         [[:for.initial < :for.final]] ~
  8.                         [[:for.initial > :for.final]])]
  9. local :for.var
  10. catch "for.catchtag [op for.done runresult [forloop :for.initial]]
  11. op []
  12. end
  13.  
  14. to forloop :for.initial
  15. make :for.var :for.initial
  16. if run :for.tester [throw "for.catchtag]
  17. run :for.instr
  18. .maybeoutput forloop (:for.initial + :for.step)
  19. end
  20.  
  21. to for.done :for.result
  22. if emptyp :for.result [op [stop]]
  23. op list "output quoted first :for.result
  24. end
  25.  
  26. to forstep
  27. if equalp count :for.values 4 [op run last :for.values]
  28. op ifelse :for.initial > :for.final [-1] [1]
  29. end
  30.  
  31. bury [for forstep forloop for.done]
  32.